home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
ast_comp
/
cpp-kit.lha
/
c++kit
/
Token.H
< prev
Wrap
C/C++ Source or Header
|
1993-04-11
|
1KB
|
53 lines
/* 9th April, 1993 Mayan Moudgill
* Tokens are actually pointers to a (possibly non-null terminated) character
* string, and its length.
*/
#include <stdlib.h>
#include <string.h>
class Token {
friend ostream& operator<<(ostream&, const Token&);
private:
char * _string;
int _length;
public:
Token()
: _string(0), _length(0) {};
Token(char * string, int length)
: _string(string), _length(length) {};
Token(char * string, char * afterlast)
: _string(string), _length(afterlast - string) {};
Token(char * string)
: _string(string)
{
_length = strlen(string);
}
int operator == ( const Token & t2 ) const
{
return _length == t2._length &&
( _string == t2._string || bcmp(_string,t2._string,_length) == 0 );
}
char * string() const
{
return _string;
}
int length () const
{
return _length;
}
char operator[](int idx) const
{
return _string[idx];
}
};
inline
ostream& operator<<(ostream& o, const Token& t)
{
o << t.length() << " <";
o.write(t._string, t._length);
o << ">";
return o;
}